home *** CD-ROM | disk | FTP | other *** search
/ Aminet 45 / Aminet 45 (2001)(GTI - Schatztruhe)[!][Oct 2001].iso / Aminet / dev / e / 2b_CrtvE_src.lha / ppc.i < prev    next >
Text File  |  2001-01-29  |  35KB  |  1,365 lines

  1. ;'''''''''''''''''''''''''''''''''''''''''''''''';
  2. ; PowerPC assembler command set                  ;
  3. ; for use with m68k macro assemblera             ;
  4. ;                                                ;
  5. ; performed by Tomasz Wiszkowski [error/bla²]    ;
  6. ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;
  7.  
  8. ;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\;
  9. ;\/ every command and keyword starts with "_"  \/;
  10. ;/\ to be recognized as a ppc related stuff    /\;
  11. ;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/;
  12.  
  13. ;¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯;
  14. ; of You're using a golded, set the folding      ;
  15. ; sentences to ";;" and ";*-*" to fold this file ;
  16. ;________________________________________________;
  17.  
  18.  
  19. ;; gprs
  20. _r0 equ 0
  21. _r1 equ 1
  22. _r2 equ 2
  23. _r3 equ 3
  24. _r4 equ 4
  25. _r5 equ 5
  26. _r6 equ 6
  27. _r7 equ 7
  28. _r8 equ 8
  29. _r9 equ 9
  30. _r10 equ 10
  31. _r11 equ 11
  32. _r12 equ 12
  33. _r13 equ 13
  34. _r14 equ 14
  35. _r15 equ 15
  36. _r16 equ 16
  37. _r17 equ 17
  38. _r18 equ 18
  39. _r19 equ 19
  40. _r20 equ 20
  41. _r21 equ 21
  42. _r22 equ 22
  43. _r23 equ 23
  44. _r24 equ 24
  45. _r25 equ 25
  46. _r26 equ 26
  47. _r27 equ 27
  48. _r28 equ 28
  49. _r29 equ 29
  50. _r30 equ 30
  51. _r31 equ 31
  52. ;*-*
  53. ;; fprs
  54. _f0 equ 0
  55. _f1 equ 1
  56. _f2 equ 2
  57. _f3 equ 3
  58. _f4 equ 4
  59. _f5 equ 5
  60. _f6 equ 6
  61. _f7 equ 7
  62. _f8 equ 8
  63. _f9 equ 9
  64. _f10 equ 10
  65. _f11 equ 11
  66. _f12 equ 12
  67. _f13 equ 13
  68. _f14 equ 14
  69. _f15 equ 15
  70. _f16 equ 16
  71. _f17 equ 17
  72. _f18 equ 18
  73. _f19 equ 19
  74. _f20 equ 20
  75. _f21 equ 21
  76. _f22 equ 22
  77. _f23 equ 23
  78. _f24 equ 24
  79. _f25 equ 25
  80. _f26 equ 26
  81. _f27 equ 27
  82. _f28 equ 28
  83. _f29 equ 29
  84. _f30 equ 30
  85. _f31 equ 31
  86. ;*-*
  87. ;; conditions
  88. _cond_true equ 12
  89. _cond_false equ 4
  90. _cond_always equ 20
  91. _cond_dz_eq equ 18
  92. _cond_dnz equ 16
  93. _cond_dz_true equ 10
  94. _cond_dnz_true equ 8
  95. _cond_dz_false equ 2
  96. _cond_dnz_false equ 0
  97.  
  98. _cond_lt equ 0
  99. _cond_le equ 1
  100. _cond_eq equ 2
  101. _cond_ov equ 3
  102. _cr0 equ 0
  103. _cr1 equ 4
  104. _cr2 equ 8
  105. _cr3 equ 12
  106. _cr4 equ 16
  107. _cr5 equ 20
  108. _cr6 equ 24
  109. _cr7 equ 28
  110. ;*-*
  111. ;; trap conditions
  112. _trap_gt equ 1
  113. _trap_lt equ 2
  114. _trap_eq equ 4
  115. _trap_ugt equ 8
  116. _trap_ult equ 16
  117. ;*-*
  118.  
  119. ;; add      / addo      / add.      / addo.
  120. _add: macro
  121.     dc.l (266*2)+(31*(1<<(31-5)))+(\1*(1<<(31-10)))+(\2*(1<<(31-15)))+(\3*(1<<(31-20)))
  122.     endm
  123. _addo: macro
  124.     dc.l (266*2)+(31*(1<<(31-5)))+(\1*(1<<(31-10)))+(\2*(1<<(31-15)))+(\3*(1<<(31-20)))+1<<(31-21)
  125.     endm
  126. _add_: macro
  127.     dc.l (266*2)+(31*(1<<(31-5)))+(\1*(1<<(31-10)))+(\2*(1<<(31-15)))+(\3*(1<<(31-20)))+1
  128.     endm
  129. _addo_: macro
  130.     dc.l (266*2)+(31*(1<<(31-5)))+(\1*(1<<(31-10)))+(\2*(1<<(31-15)))+(\3*(1<<(31-20)))+1<<(31-21)+1
  131.     endm
  132. ;*-*
  133. ;; addc     / addco     / addc.     / addco.
  134. _addc: macro
  135.     dc.l (10*2)+(31*(1<<(31-5)))+(\1*(1<<(31-10)))+(\2*(1<<(31-15)))+(\3*(1<<(31-20)))
  136.     endm
  137. _addco: macro
  138.     dc.l (10*2)+(31*(1<<(31-5)))+(\1*(1<<(31-10)))+(\2*(1<<(31-15)))+(\3*(1<<(31-20)))+1<<(31-21)
  139.     endm
  140. _addc_: macro
  141.     dc.l (10*2)+(31*(1<<(31-5)))+(\1*(1<<(31-10)))+(\2*(1<<(31-15)))+(\3*(1<<(31-20)))+1
  142.     endm
  143. _addco_: macro
  144.     dc.l (10*2)+(31*(1<<(31-5)))+(\1*(1<<(31-10)))+(\2*(1<<(31-15)))+(\3*(1<<(31-20)))+1<<(31-21)+1
  145.     endm
  146. ;*-*
  147. ;; adde     / addeo     / adde.     / addeo.
  148. _adde: macro
  149.     dc.l (138*2)+(31*1<<(31-5))+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  150.     endm
  151. _addeo: macro
  152.     dc.l (138*2)+(31*1<<(31-5))+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))+1<<(31-21)
  153.     endm
  154. _adde_: macro
  155.     dc.l (138*2)+(31*1<<(31-5))+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))+1
  156.     endm
  157. _addeo_: macro
  158.     dc.l (138*2)+(31*1<<(31-5))+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))+1<<(31-21)+1
  159.     endm
  160. ;*-*
  161. ;; addi     / li        / subi
  162. _addi: macro
  163.     dc.l    (14*1<<(31-5))+(\1*1<<(31-10))+(\2*1<<(31-15))+\3
  164.     endm
  165. _li: macro
  166.     _addi \1,0,\2
  167.     endm
  168. _subi: macro
  169.     _addi \1,\2,-\3
  170.     endm
  171. ;*-*
  172. ;; addic    / subic     / addic.    / subic.
  173. _addic: macro
  174.     dc.l    (12*1<<(31-5))+(\1*1<<(31-10))+(\2*1<<(31-15))+\3
  175.     endm
  176. _subic: macro
  177.     _addic \1,\2,-\3
  178.     endm
  179. _addic_: macro
  180.     dc.l    (13*1<<(31-5))+(\1*1<<(31-10))+(\2*1<<(31-15))+\3
  181.     endm
  182. _subic_: macro
  183.     _addic \1,\2,-\3
  184.     endm
  185. ;*-*
  186. ;; addis    / lis       / subis
  187. _addis: macro
  188.     dc.l    (15*1<<(31-5))+(\1*1<<(31-10))+(\2*1<<(31-15))+\3
  189.     endm
  190. _lis: macro
  191.     _addis  \1,0,\2
  192.     endm
  193. _subis: macro
  194.     _addis \1,\2,-\3
  195.     endm
  196. ;*-*
  197. ;; addme    / addmeo    / addme.    / addmeo.
  198. _addme: macro
  199.     dc.l    (31*1<<(31-5))+(234*2)+(\1*1<<(31-10))+(\2*1<<(31-15))
  200.     endm
  201. _addmeo: macro
  202.     dc.l    (31*1<<(31-5))+(234*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(1<<(31-21))
  203.     endm
  204. _addme_: macro
  205.     dc.l    (31*1<<(31-5))+(234*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+1
  206.     endm
  207. _addmeo_: macro
  208.     dc.l    (31*1<<(31-5))+(234*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(1<<(31-21))+1
  209.     endm
  210. ;*-*
  211. ;; addze    / addzeo    / addze.    / addzeo.
  212. _addze: macro
  213.     dc.l    (31*1<<(31-5))+(202*2)+(\1*1<<(31-10))+(\2*1<<(31-15))
  214.     endm
  215. _addzeo: macro
  216.     dc.l    (31*1<<(31-5))+(202*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(1<<(31-21))
  217.     endm
  218. _addze_: macro
  219.     dc.l    (31*1<<(31-5))+(202*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+1
  220.     endm
  221. _addzeo_: macro
  222.     dc.l    (31*1<<(31-5))+(202*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(1<<(31-21))+1
  223.     endm
  224. ;*-*
  225. ;; and      / and.
  226. _and: macro
  227.     dc.l    (31*1<<(31-5))+(28*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  228.     endm
  229. _and_: macro
  230.     dc.l    (31*1<<(31-5))+(28*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))+1
  231.     endm
  232. ;*-*
  233. ;; andc     / andc.
  234. _andc: macro
  235.     dc.l    (31*1<<(31-5))+(60*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  236.     endm
  237. _andc_: macro
  238.     dc.l    (31*1<<(31-5))+(60*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))+1
  239.     endm
  240. ;*-*
  241. ;; andi.
  242. _andi_: macro
  243.     dc.l (28*1<<(31-5))+(\1*1<<(31-10))+(\2*1<<(31-15))+\3
  244.     endm
  245. ;*-*
  246. ;; andis.
  247. _andis_: macro
  248.     dc.l (29*1<<(31-5))+(\1*1<<(31-10))+(\2*1<<(31-15))+\3
  249.     endm
  250. ;*-*
  251. ;; b        / ba        / bl        / bla
  252. _b: macro
  253.     dc.l ((18*1<<(31-5))+(\1-*))
  254.     endm
  255. _ba: macro
  256.     dc.l \1+((18*1<<(31-5))+2)
  257.     endm
  258. _bl: macro
  259.     dc.l (18*1<<(31-5))+(\1-*)+1
  260.     endm
  261. _bla: macro
  262.     dc.l (18*1<<(31-5))+\1+3
  263.     endm
  264. ;*-*
  265. ;; bc       / bca       / bcl       / bcla
  266. _bc: macro
  267.     dc.l ((16*1<<(31-5))+(\3-*))+(\1*1<<(31-10))+(\2*1<<(31-15))
  268.     endm
  269. _bca: macro
  270.     dc.l \3+((16*1<<(31-5))+2)+(\1*1<<(31-10))+(\2*1<<(31-15))
  271.     endm
  272. _bcl: macro
  273.     dc.l (16*1<<(31-5))+(\3-*)+1+(\1*1<<(31-10))+(\2*1<<(31-15))
  274.     endm
  275. _bcla: macro
  276.     dc.l (16*1<<(31-5))+\3+3+(\1*1<<(31-10))+(\2*1<<(31-15))
  277.     endm
  278. ;*-*
  279. ;; bcctr    / bcctrl
  280. _bcctr: macro
  281.     dc.l (19*1<<(31-5))+(528*2)+(\1*1<<(31-10))+(\2*1<<(31-15))
  282.     endm
  283. _bcctrl: macro
  284.     dc.l (19*1<<(31-5))+(528*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+1
  285.     endm
  286. ;*-*
  287. ;; bclr     / bclrl
  288. _bclr: macro
  289.     dc.l (19*1<<(31-5))+(16*2)+(\1*1<<(31-10))+(\2*1<<(31-15))
  290.     endm
  291. _bclrl: macro
  292.     dc.l (19*1<<(31-5))+(16*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+1
  293.     endm
  294. ;*-*
  295. ;; cmp      / cmpd      / cmpw
  296. _cmp: macro
  297.     dc.l    (31*1<<(31-5))+((\1>>2)*1<<(31-8))+(\2*1<<(31-10))+(\3*1<<(31-15))+(\4*1<<(31-20))
  298.     endm
  299. _cmpd: macro
  300.     _cmp \1,1,\2,\3
  301.     endm
  302. _cmpw: macro
  303.     _cmp \1,0,\2,\3
  304.     endm
  305. ;*-*
  306. ;; cmpi     / cmpdi     / cmpwi
  307. _cmpi: macro
  308.     dc.l    (11*1<<(31-5))+((\1>>2)*1<<(31-8))+(\2*1<<(31-10))+(\3*1<<(31-15))+\4
  309.     endm
  310. _cmpdi: macro
  311.     _cmpi \1,1,\2,\3
  312.     endm
  313. _cmpwi: macro
  314.     _cmpi \1,0,\2,\3
  315.     endm
  316. ;*-*
  317. ;; cmpl     / cmpld     / cmplw
  318. _cmpl: macro
  319.     dc.l    (31*1<<(31-5))+(32*2)+((\1>>2)*1<<(31-8))+(\2*1<<(31-10))+(\3*1<<(31-15))+(\4*1<<(31-20))
  320.     endm
  321. _cmpld: macro
  322.     _cmpl \1,1,\2,\3
  323.     endm
  324. _cmplw: macro
  325.     _cmpl \1,0,\2,\3
  326.     endm
  327. ;*-*
  328. ;; cmpli    / cmpldi    / cmplwi
  329. _cmpli: macro
  330.     dc.l    (10*1<<(31-5))+((\1>>2)*1<<(31-8))+(\2*1<<(31-10))+(\3*1<<(31-15))+\4
  331.     endm
  332. _cmpldi: macro
  333.     _cmpli \1,1,\2,\3
  334.     endm
  335. _cmplwi: macro
  336.     _cmpli \1,0,\2,\3
  337.     endm
  338. ;*-*
  339. ;; cntlzw   / cntlzw.
  340. _cntlzw: macro
  341.     dc.l (31*1<<(31-5))+(26*2)+(\1*1<<(31-10))+(\2*1<<(31-15))
  342.     endm
  343. _cntlzw_: macro
  344.     dc.l (31*1<<(31-5))+(26*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+1
  345.     endm
  346. ;*-*
  347. ;; crand
  348. _crand: macro
  349.     dc.l (19*1<<(31-5))+(257*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  350.     endm
  351. ;*-*
  352. ;; crandc
  353. _crandc: macro
  354.     dc.l (19*1<<(31-5))+(129*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  355.     endm
  356. ;*-*
  357. ;; creqv    / crset
  358. _creqv: macro
  359.     dc.l (19*1<<(31-5))+(289*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  360.     endm
  361. _crset: macro
  362.     _creqv \1,\1,\1
  363.     endm
  364. ;*-*
  365. ;; crnand
  366. _crnand: macro
  367.     dc.l (19*1<<(31-5))+(225*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  368.     endm
  369. ;*-*
  370. ;; crnor    / crnot
  371. _crnor: macro
  372.     dc.l (19*1<<(31-5))+(33*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  373.     endm
  374. _crnot: macro
  375.     _crandc \1,\2,\2
  376.     endm
  377. ;*-*
  378. ;; cror     / crmove
  379. _cror: macro
  380.     dc.l (19*1<<(31-5))+(449*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  381.     endm
  382. _crmove: macro
  383.     _crandc \1,\2,\2
  384.     endm
  385. ;*-*
  386. ;; crorc
  387. _crorc: macro
  388.     dc.l (19*1<<(31-5))+(417*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  389.     endm
  390. ;*-*
  391. ;; crxor    / crclr
  392. _crxor: macro
  393.     dc.l (19*1<<(31-5))+(193*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  394.     endm
  395. _crclr: macro
  396.     _crxor \1,\1,\1
  397.     endm
  398. ;*-*
  399. ;; dcba
  400. _dcba: macro
  401.     dc.l    (31*1<<(31-5))+(758*2)+(\1*1<<(31-15))+(\2*1<<(31-20))
  402.     endm
  403. ;*-*
  404. ;; dcbf
  405. _dcbf: macro
  406.     dc.l    (31*1<<(31-5))+(86*2)+(\1*1<<(31-15))+(\2*1<<(31-20))
  407.     endm
  408. ;*-*
  409. ;; dcbi
  410. _dcbi: macro
  411.     dc.l    (31*1<<(31-5))+(470*2)+(\1*1<<(31-15))+(\2*1<<(31-20))
  412.     endm
  413. ;*-*
  414. ;; dcbst
  415. _dcbst: macro
  416.     dc.l    (31*1<<(31-5))+(54*2)+(\1*1<<(31-15))+(\2*1<<(31-20))
  417.     endm
  418. ;*-*
  419. ;; dcbt
  420. _dcbt: macro
  421.     dc.l    (31*1<<(31-5))+(278*2)+(\1*1<<(31-15))+(\2*1<<(31-20))
  422.     endm
  423. ;*-*
  424. ;; dcbtst
  425. _dcbtst: macro
  426.     dc.l    (31*1<<(31-5))+(246*2)+(\1*1<<(31-15))+(\2*1<<(31-20))
  427.     endm
  428. ;*-*
  429. ;; dcbz
  430. _dcbz: macro
  431.     dc.l    (31*1<<(31-5))+(1014*2)+(\1*1<<(31-15))+(\2*1<<(31-20))
  432.     endm
  433. ;*-*
  434. ;; divw     / divwo     / divw.     / divwo.
  435. _divw: macro
  436.     dc.l    (31*1<<(31-5))+(491*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  437.     endm
  438. _divwo: macro
  439.     dc.l    (31*1<<(31-5))+(491*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))+(1<<(31-21))
  440.     endm
  441. _divw_: macro
  442.     dc.l    (31*1<<(31-5))+(491*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))+1
  443.     endm
  444. _divwo_: macro
  445.     dc.l    (31*1<<(31-5))+(491*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))+(1<<(31-21))+1
  446.     endm
  447. ;*-*
  448. ;; divwu    / divwuo    / divwu.    / divwuo.
  449. _divwu: macro
  450.     dc.l    (31*1<<(31-5))+(459*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  451.     endm
  452. _divwuo: macro
  453.     dc.l    (31*1<<(31-5))+(459*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))+(1<<(31-21))
  454.     endm
  455. _divwu_: macro
  456.     dc.l    (31*1<<(31-5))+(459*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))+1
  457.     endm
  458. _divwuo_: macro
  459.     dc.l    (31*1<<(31-5))+(459*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))+(1<<(31-21))+1
  460.     endm
  461. ;*-*
  462. ;; eciwx
  463. _eciwx: macro
  464.     dc.l    (31*1<<(31-5))+(310*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  465.     endm
  466. ;*-*
  467. ;; ecowx
  468. _ecowx: macro
  469.     dc.l    (31*1<<(31-5))+(438*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  470.     endm
  471. ;*-*
  472. ;; eieio
  473. _eieio: macro
  474.     dc.l    (31*1<<(31-5))+(854*2)
  475.     endm
  476. ;*-*
  477. ;; eqv      / eqv.
  478. _eqv: macro
  479.     dc.l    (31*1<<(31-5))+(284*2)+(\2*1<<(31-10))+(\1*1<<(31-15))+(\3*1<<(31-20))
  480.     endm
  481. _eqv_: macro
  482.     dc.l    (31*1<<(31-5))+(284*2)+(\2*1<<(31-10))+(\1*1<<(31-15))+(\3*1<<(31-20))+1
  483.     endm
  484. ;*-*
  485. ;; extsb    / extsb.
  486. _extsb: macro
  487.     dc.l (31*1<<(31-5))+(954*2)+(\1*1<<(31-15))+(\2*1<<(31-10))
  488.     endm
  489. _extsb_: macro
  490.     dc.l (31*1<<(31-5))+(954*2)+(\1*1<<(31-15))+(\2*1<<(31-10))+1
  491.     endm
  492. ;*-*
  493. ;; extsh    / extsh.
  494. _extsh: macro
  495.     dc.l (31*1<<(31-5))+(922*2)+(\1*1<<(31-15))+(\2*1<<(31-10))
  496.     endm
  497. _extsh_: macro
  498.     dc.l (31*1<<(31-5))+(922*2)+(\1*1<<(31-15))+(\2*1<<(31-10))+1
  499.     endm
  500. ;*-*
  501. ;; fabs     / fabs.
  502. _fabs: macro
  503.     dc.l    (63*1<<(31-5))+(264*2)+(\1*1<<(31-10))+(\2*1<<(31-20))
  504.     endm
  505. _fabs_: macro
  506.     dc.l    (63*1<<(31-5))+(264*2)+(\1*1<<(31-10))+(\2*1<<(31-20))+1
  507.     endm
  508. ;*-*
  509. ;; fadd     / fadd.
  510. _fadd: macro
  511.     dc.l (63*1<<(31-5))+(21*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  512.     endm
  513. _fadd_: macro
  514.     dc.l (63*1<<(31-5))+(21*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))+1
  515.     endm
  516. ;*-*
  517. ;; fadds    / fadds.
  518. _fadds: macro
  519.     dc.l (59*1<<(31-5))+(21*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  520.     endm
  521. _fadds_: macro
  522.     dc.l (59*1<<(31-5))+(21*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))+1
  523.     endm
  524. ;*-*
  525. ;; fcmpo
  526. _fcmpo: macro
  527.     dc.l    (63*1<<(31-5))+(32*2)+(\1>>2*1<<(31-8))+(\2*1<<(31-15))+(\3*1<<(31-20))
  528.     endm
  529. ;*-*
  530. ;; fcmpu
  531. _fcmpu: macro
  532.     dc.l    (63*1<<(31-5))+(\1>>2*1<<(31-8))+(\2*1<<(31-15))+(\3*1<<(31-20))
  533.     endm
  534. ;*-*
  535. ;; fctiw    / fctiw.
  536. _fctiw: macro
  537.     dc.l    (63*1<<(31-5))+(14*2)+(\1*1<<(31-10))+(\2*1<<(31-20))
  538.     endm
  539. _fctiw_: macro
  540.     dc.l    (63*1<<(31-5))+(14*2)+(\1*1<<(31-10))+(\2*1<<(31-20))+1
  541.     endm
  542. ;*-*
  543. ;; fctiwz   / fctiwz.
  544. _fctiwz: macro
  545.     dc.l    (63*1<<(31-5))+(15*2)+(\1*1<<(31-10))+(\2*1<<(31-20))
  546.     endm
  547. _fctiwz_: macro
  548.     dc.l    (63*1<<(31-5))+(15*2)+(\1*1<<(31-10))+(\2*1<<(31-20))+1
  549.     endm
  550. ;*-*
  551. ;; fdiv     / fdiv.
  552. _fdiv: macro
  553.     dc.l    (63*1<<(31-5))+(18*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  554.     endm
  555. _fdiv_: macro
  556.     dc.l    (63*1<<(31-5))+(18*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))+1
  557.     endm
  558. ;*-*
  559. ;; fdivs    / fdivs.
  560. _fdivs: macro
  561.     dc.l    (59*1<<(31-5))+(18*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  562.     endm
  563. _fdivs_: macro
  564.     dc.l    (59*1<<(31-5))+(18*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))+1
  565.     endm
  566. ;*-*
  567. ;; fmadd    / fmadd.
  568. _fmadd: macro
  569.     dc.l (63*1<<(31-5))+(29*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))+(\4*1<<(31-20))
  570.     endm
  571. _fmadd_: macro
  572.     dc.l (63*1<<(31-5))+(29*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))+(\4*1<<(31-20))+1
  573.     endm
  574. ;*-*
  575. ;; fmadds   / fmadds.
  576. _fmadds: macro
  577.     dc.l (59*1<<(31-5))+(29*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))+(\4*1<<(31-20))
  578.     endm
  579. _fmadds_: macro
  580.     dc.l (59*1<<(31-5))+(29*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))+(\4*1<<(31-20))+1
  581.     endm
  582. ;*-*
  583. ;; fmr      / fmr.
  584. _fmr: macro
  585.     dc.l (63*1<<(31-5))+(72*2)+(\1*1<<(31-10))+(\2*1<<(31-20))
  586.     endm
  587. _fmr_: macro
  588.     dc.l (63*1<<(31-5))+(72*2)+(\1*1<<(31-10))+(\2*1<<(31-20))+1
  589.     endm
  590. ;*-*
  591. ;; fmsub    / fmsub.
  592. _fmsub: macro
  593.     dc.l (63*1<<(31-5))+(28*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))+(\4*1<<(31-20))
  594.     endm
  595. _fmsub_: macro
  596.     dc.l (63*1<<(31-5))+(28*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))+(\4*1<<(31-20))+1
  597.     endm
  598. ;*-*
  599. ;; fmsubs   / fmsubs.
  600. _fmsubs: macro
  601.     dc.l (59*1<<(31-5))+(28*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))+(\4*1<<(31-20))
  602.     endm
  603. _fmsubs_: macro
  604.     dc.l (59*1<<(31-5))+(28*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))+(\4*1<<(31-20))+1
  605.     endm
  606. ;*-*
  607. ;; fmul     / fmul.
  608. _fmul: macro
  609.     dc.l    (63*1<<(31-5))+(25*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))
  610.     endm
  611. _fmul_: macro
  612.     dc.l    (63*1<<(31-5))+(25*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))+1
  613.     endm
  614. ;*-*
  615. ;; fmuls    / fmuls.
  616. _fmuls: macro
  617.     dc.l    (59*1<<(31-5))+(25*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))
  618.     endm
  619. _fmuls_: macro
  620.     dc.l    (59*1<<(31-5))+(25*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))+1
  621.     endm
  622. ;*-*
  623. ;; fnabs    / fnabs.
  624. _fnabs: macro
  625.     dc.l (63*1<<(31-5))+(136*2)+(\1*1<<(31-10))+(\2*1<<(31-20))
  626.     endm
  627. _fnabs_: macro
  628.     dc.l (63*1<<(31-5))+(136*2)+(\1*1<<(31-10))+(\2*1<<(31-20))+1
  629.     endm
  630. ;*-*
  631. ;; fneg     / fneg.
  632. _fneg: macro
  633.     dc.l (63*1<<(31-5))+(40*2)+(\1*1<<(31-10))+(\2*1<<(31-20))
  634.     endm
  635. _fneg_: macro
  636.     dc.l (63*1<<(31-5))+(40*2)+(\1*1<<(31-10))+(\2*1<<(31-20))+1
  637.     endm
  638. ;*-*
  639. ;; fnmadd   / fnmadd.
  640. _fnmadd: macro
  641.     dc.l (63*1<<(31-5))+(31*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))+(\4*1<<(31-20))
  642.     endm
  643. _fnmadd_: macro
  644.     dc.l (63*1<<(31-5))+(31*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))+(\4*1<<(31-20))+1
  645.     endm
  646. ;*-*
  647. ;; fnmadds  / fnmadds.
  648. _fnmadds: macro
  649.     dc.l (59*1<<(31-5))+(31*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))+(\4*1<<(31-20))
  650.     endm
  651. _fnmadds_: macro
  652.     dc.l (59*1<<(31-5))+(31*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))+(\4*1<<(31-20))+1
  653.     endm
  654. ;*-*
  655. ;; fnmsub   / fnmsub.
  656. _fnmsub: macro
  657.     dc.l (63*1<<(31-5))+(30*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))+(\4*1<<(31-20))
  658.     endm
  659. _fnmsub_: macro
  660.     dc.l (63*1<<(31-5))+(30*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))+(\4*1<<(31-20))+1
  661.     endm
  662. ;*-*
  663. ;; fnmsubs  / fnmsubs.
  664. _fnmsubs: macro
  665.     dc.l (59*1<<(31-5))+(30*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))+(\4*1<<(31-20))
  666.     endm
  667. _fnmsubs_: macro
  668.     dc.l (59*1<<(31-5))+(30*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))+(\4*1<<(31-20))+1
  669.     endm
  670. ;*-*
  671. ;; fres     / fres.
  672. _fres: macro
  673.     dc.l (59*1<<(31-5))+(24*2)+(\1*1<<(31-10))+(\2*1<<(31-20))
  674.     endm
  675. _fres_: macro
  676.     dc.l (59*1<<(31-5))+(24*2)+(\1*1<<(31-10))+(\2*1<<(31-20))+1
  677.     endm
  678. ;*-*
  679. ;; frsp     / frsp.
  680. _frsp: macro
  681.     dc.l (63*1<<(31-5))+(12*2)+(\1*1<<(31-10))+(\2*1<<(31-20))
  682.     endm
  683. _frsp_: macro
  684.     dc.l (63*1<<(31-5))+(12*2)+(\1*1<<(31-10))+(\2*1<<(31-20))+1
  685.     endm
  686. ;*-*
  687. ;; fsqrte   / fsqrte.
  688. _fsqrte: macro
  689.     dc.l (63*1<<(31-5))+(26*2)+(\1*1<<(31-10))+(\2*1<<(31-20))
  690.     endm
  691. _fsqrte_: macro
  692.     dc.l (63*1<<(31-5))+(26*2)+(\1*1<<(31-10))+(\2*1<<(31-20))+1
  693.     endm
  694. ;*-*
  695. ;; fsel     / fsel.
  696. _fsel: macro
  697.     dc.l (63*1<<(31-5))+(23*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))+(\4*1<<(31-20))
  698.     endm
  699. _fsel_: macro
  700.     dc.l (63*1<<(31-5))+(3*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-25))+(\4*1<<(31-20))+1
  701.     endm
  702. ;*-*
  703. ;; fsqrt    / fsqrt.
  704. _fsqrt: macro
  705.     dc.l (63*1<<(31-5))+(22*2)+(\1*1<<(31-10))+(\2*1<<(31-20))
  706.     endm
  707. _fsqrt_: macro
  708.     dc.l (63*1<<(31-5))+(22*2)+(\1*1<<(31-10))+(\2*1<<(31-20))+1
  709.     endm
  710. ;*-*
  711. ;; fsqrts   / fsqrts.
  712. _fsqrts: macro
  713.     dc.l (59*1<<(31-5))+(22*2)+(\1*1<<(31-10))+(\2*1<<(31-20))
  714.     endm
  715. _fsqrts_: macro
  716.     dc.l (59*1<<(31-5))+(22*2)+(\1*1<<(31-10))+(\2*1<<(31-20))+1
  717.     endm
  718. ;*-*
  719. ;; fsub     / fsub.
  720. _fsub: macro
  721.     dc.l (63*1<<(31-5))+(20*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  722.     endm
  723. _fsub_: macro
  724.     dc.l (63*1<<(31-5))+(20*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))+1
  725.     endm
  726. ;*-*
  727. ;; fsubs    / fsubs.
  728. _fsubs: macro
  729.     dc.l (59*1<<(31-5))+(20*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  730.     endm
  731. _fsubs_: macro
  732.     dc.l (59*1<<(31-5))+(20*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))+1
  733.     endm
  734. ;*-*
  735. ;; icbi
  736. _icbi: macro
  737.     dc.l    (31*1<<(31-5))+(982*2)+(\1*1<<(31-15))+(\2*1<<(31-20))
  738.     endm
  739. ;*-*
  740. ;; isync
  741. _isnyc: macro
  742.     dc.l    (19*1<<(31-5))+(150*2)
  743.     endm
  744. ;*-*
  745. ;; lbz      / lbzu      / lbzux     / lbzx
  746. _lbz: macro
  747.     dc.l    (34*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  748.     endm
  749. _lbzu: macro
  750.     dc.l    (35*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  751.     endm
  752. _lbzux: macro
  753.     dc.l    (31*1<<(31-5))+(119*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  754.     endm
  755. _lbzx: macro
  756.     dc.l    (31*1<<(31-5))+(87*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  757.     endm
  758. ;*-*
  759. ;; lfd      / lfdu      / lfdux     / lfdx
  760. _lfd: macro
  761.     dc.l    (50*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  762.     endm
  763. _lfdu: macro
  764.     dc.l    (51*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  765.     endm
  766. _lfdux: macro
  767.     dc.l    (31*1<<(31-5))+(631*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  768.     endm
  769. _lfdx: macro
  770.     dc.l    (31*1<<(31-5))+(599*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  771.     endm
  772. ;*-*
  773. ;; lfs      / lfsu      / lfsux     / lfsx
  774. _lfs: macro
  775.     dc.l    (48*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  776.     endm
  777. _lfsu: macro
  778.     dc.l    (49*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  779.     endm
  780. _lfsux: macro
  781.     dc.l    (31*1<<(31-5))+(567*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  782.     endm
  783. _lfsx: macro
  784.     dc.l    (31*1<<(31-5))+(535*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  785.     endm
  786. ;*-*
  787. ;; lha      / lhau      / lhaux     / lhax
  788. _lha: macro
  789.     dc.l    (42*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  790.     endm
  791. _lhau: macro
  792.     dc.l    (43*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  793.     endm
  794. _lhaux: macro
  795.     dc.l    (31*1<<(31-5))+(375*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  796.     endm
  797. _lhax: macro
  798.     dc.l    (31*1<<(31-5))+(343*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  799.     endm
  800. ;*-*
  801. ;; lhbrx
  802. _lhbrx: macro
  803.     dc.l    (31*1<<(31-5))+(790*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  804.     endm
  805. ;*-*
  806. ;; lhz      / lhzu      / lhzux     / lhzx
  807. _lhz: macro
  808.     dc.l    (40*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  809.     endm
  810. _lhzu: macro
  811.     dc.l    (41*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  812.     endm
  813. _lhzux: macro
  814.     dc.l    (31*1<<(31-5))+(311*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  815.     endm
  816. _lhzx: macro
  817.     dc.l    (31*1<<(31-5))+(279*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  818.     endm
  819. ;*-*
  820. ;; lmw
  821. _lmw: macro
  822.     dc.l    (46*1<<(31-5))+(\1<<(31-10))+\2+(\3<<(31-15))
  823.     endm
  824. ;*-*
  825. ;; lswi     / lswx
  826. _lswi: macro
  827.     dc.l    (31<<(31-5))+(597*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))
  828.     endm
  829. _lswx: macro
  830.     dc.l    (31<<(31-5))+(533*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))
  831.     endm
  832. ;*-*
  833. ;; lwarx    / lwbrx
  834. _lwarx: macro
  835.     dc.l    (31<<(31-5))+(20*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))
  836.     endm
  837. _lwbrx: macro
  838.     dc.l    (31<<(31-5))+(534*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))
  839.     endm
  840. ;*-*
  841. ;; lwz      / lwzu      / lwzux     / lwzx
  842. _lwz: macro
  843.     dc.l    (32*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  844.     endm
  845. _lwzu: macro
  846.     dc.l    (33*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  847.     endm
  848. _lwzux: macro
  849.     dc.l    (31*1<<(31-5))+(55*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  850.     endm
  851. _lwzx: macro
  852.     dc.l    (31*1<<(31-5))+(23*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  853.     endm
  854. ;*-*
  855. ;; mcrf     / mcrfs     / mcrxr
  856. _mcrf: macro
  857.     dc.l    (19<<(31-5))+(\1>>2<<(31-8))+(\2>>2<<(31-13))
  858.     endm
  859. _mcrfs: macro
  860.     dc.l    (63<<(31-5))+(64*2)+(\1>>2<<(31-8))+(\2>>2<<(31-13))
  861.     endm
  862. _mcrxr: macro
  863.     dc.l    (31<<(31-5))+(512*2)+(\1>>2<<(31-8))
  864.     endm
  865. ;*-*
  866. ;; mfcr     / mffs      / mffs.     / mfmsr
  867. _mfcr: macro
  868.     dc.l    (31<<(31-5))+(19*2)+(\1<<(31-10))
  869.     endm
  870. _mffs: macro
  871.     dc.l    (63<<(31-5))+(583*2)+(\1<<(31-10))
  872.     endm
  873. _mffs_: macro
  874.     dc.l    (63<<(31-5))+(583*2)+(\1<<(31-10))+1
  875.     endm
  876. _mfmsr: macro
  877.     dc.l    (31<<(31-5))+(83*2)+(\1<<(31-10))
  878.     endm
  879. ;*-*
  880. ;; mfspr    / mfsr      / mfsrin    / mftb
  881. _mfspr: macro
  882.     dc.l    (31<<(31-5))+(339*2)+(\1<<(31-10))+(\3<<(31-15))+(\2<<(31-20))
  883.     endm
  884. _mfsr: macro
  885.     dc.l    (31<<(31-5))+(595*2)+(\1<<(31-10))+(\2<<(31-15))
  886.     endm
  887. _mfsrin: macro
  888.     dc.l    (31<<(31-5))+(659*2)+(\1<<(31-10))+(\2<<(31-20))
  889.     endm
  890. _mftb: macro
  891.     dc.l    (31<<(31-5))+(371*2)+(\1<<(31-10))+(\2<<(31-20))+(\3<<(31-15))
  892.     endm
  893. ;*-*
  894. ;; mtcrf    / mtcr
  895. _mtcrf: macro
  896.     dc.l    (31<<(31-5))+(144*2)+(\2<<(31-10))+(\1<<(31-19))
  897.     endm
  898. _mtcr: macro
  899.     _mtcrf 255,\1
  900. ;*-*
  901. ;; mtfsb0   / mtfsb0.   / mtfsb1    / mtfsb1.
  902. _mtfsb0: macro
  903.     dc.l    (63<<(31-5))+(70*2)+(\1<<(31-10))
  904.     endm
  905. _mtfsb0_: macro
  906.     dc.l    (63<<(31-5))+(70*2)+(\1<<(31-10))+1
  907.     endm
  908. _mtfsb1: macro
  909.     dc.l    (63<<(31-5))+(38*2)+(\1<<(31-10))
  910.     endm
  911. _mtfsb1_: macro
  912.     dc.l    (63<<(31-5))+(38*2)+(\1<<(31-10))+1
  913.     endm
  914. ;*-*
  915. ;; mtfsf    / mtfsf.    / mtfsfi    / mtfsfi.
  916. _mtfsf: macro
  917.     dc.l    (63<<(31-5))+(711*2)+(\1<<(31-14))+(\2<<(31-20))
  918.     endm
  919. _mtfsf_: macro
  920.     dc.l    (63<<(31-5))+(711*2)+(\1<<(31-14))+(\2<<(31-20))+1
  921.     endm
  922. _mtfsfi: macro
  923.     dc.l    (63<<(31-5))+(134*2)+(\1>>2<<(31-8))+(\2<<(31-19))
  924.     endm
  925. _mtfsfi_: macro
  926.     dc.l    (63<<(31-5))+(134*2)+(\1>>2<<(31-8))+(\2<<(31-19))+1
  927.     endm
  928. ;*-*
  929. ;; mtmsr
  930. _mtmsr: macro
  931.     dc.l    (31<<(31-5))+(146*2)+(\1<<(31-10))
  932.     endm
  933. ;*-*
  934. ;; mtspr
  935. _mtspr: macro
  936.     dc.l    (31<<(31-5))+(467*2)+(\1<<(31-20))+(\2<<(31-15))+(\3<<(31-10))
  937.     endm
  938. ;*-*
  939. ;; mtsr     / mtsrin
  940. _mtsr: macro
  941.     dc.l    (31<<(31-5))+(210*2)+(\1<<(31-15))+(\2<<(31-10))
  942.     endm
  943. _mtsrin: macro
  944.     dc.l    (31<<(31-5))+(242*2)+(\1<<(31-10))+(\2<<(31-20))
  945.     endm
  946. ;*-*
  947. ;; mulhw    / mulhw.    / mulhwu    / mulhwu.
  948. _mulhw: macro
  949.     dc.l    (31<<(31-5))+(75*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))
  950.     endm
  951. _mulhw_: macro
  952.     dc.l    (31<<(31-5))+(75*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))+1
  953.     endm
  954. _mulhwu: macro
  955.     dc.l    (31<<(31-5))+(11*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))
  956.     endm
  957. _mulhwu_: macro
  958.     dc.l    (31<<(31-5))+(11*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))+1
  959.     endm
  960. ;*-*
  961. ;; mulli
  962. _mulli: macro
  963.     dc.l    (7<<(31-5))+(\1<<(31-10))+(\2<<(31-15))+\3
  964.     endm
  965. ;*-*
  966. ;; mullw    / mullwo    / mullw.    / mullwo.
  967. _mullw: macro
  968.     dc.l    (31<<(31-5))+(235*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))
  969.     endm
  970. _mullwo: macro
  971.     dc.l    (31<<(31-5))+(235*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))+(1<<(31-21))
  972.     endm
  973. _mullw_: macro
  974.     dc.l    (31<<(31-5))+(235*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))+1
  975.     endm
  976. _mullwo_: macro
  977.     dc.l    (31<<(31-5))+(235*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))+(1<<(31-21))+1
  978.     endm
  979. ;*-*
  980. ;; nand     / nand.
  981. _nand: macro
  982.     dc.l (31<<(31-5))+(476*2)+(\2<<(31-10))+(\1<<(31-15))+(\3<<(31-20))
  983.     endm
  984. _nand_: macro
  985.     dc.l (31<<(31-5))+(476*2)+(\2<<(31-10))+(\1<<(31-15))+(\3<<(31-20))+1
  986.     endm
  987. ;*-*
  988. ;; neg      / nego      / neg.      / nego.
  989. _neg: macro
  990.     dc.l    (31<<(31-5))+(104*2)+(\1<<(31-10))+(\2<<(31-15))
  991.     endm
  992. _nego: macro
  993.     dc.l    (31<<(31-5))+(104*2)+(\1<<(31-10))+(\2<<(31-15))+(1<<(31-21))
  994.     endm
  995. _neg_: macro
  996.     dc.l    (31<<(31-5))+(104*2)+(\1<<(31-10))+(\2<<(31-15))+1
  997.     endm
  998. _nego_: macro
  999.     dc.l    (31<<(31-5))+(104*2)+(\1<<(31-10))+(\2<<(31-15))+(1<<(31-21))+1
  1000.     endm
  1001. ;*-*
  1002. ;; nor      / nor.
  1003. _nor: macro
  1004.     dc.l    (31<<(31-5))+(124*2)+(\2<<(31-10))+(\1<<(31-15))+(\3<<(31-20))
  1005.     endm
  1006. _nor_: macro
  1007.     dc.l    (31<<(31-5))+(124*2)+(\2<<(31-10))+(\1<<(31-15))+(\3<<(31-20))+1
  1008.     endm
  1009. ;*-*
  1010. ;; or       / or.
  1011. _or: macro
  1012.     dc.l    (31<<(31-5))+(444*2)+(\2<<(31-10))+(\1<<(31-15))+(\3<<(31-20))
  1013.     endm
  1014. _or_: macro
  1015.     dc.l    (31<<(31-5))+(444*2)+(\2<<(31-10))+(\1<<(31-15))+(\3<<(31-20))+1
  1016.     endm
  1017. ;*-*
  1018. ;; orc      / orc.
  1019. _orc: macro
  1020.     dc.l    (31<<(31-5))+(412*2)+(\2<<(31-10))+(\1<<(31-15))+(\3<<(31-20))
  1021.     endm
  1022. _orc_: macro
  1023.     dc.l    (31<<(31-5))+(412*2)+(\2<<(31-10))+(\1<<(31-15))+(\3<<(31-20))+1
  1024.     endm
  1025. ;*-*
  1026. ;; ori      / nop
  1027. _ori: macro
  1028.     dc.l (24<<(31-5))+(\2<<(31-10))+(\1<<(31-15))+\3
  1029.     endm
  1030. _nop: macro
  1031.     _ori 0,0,0
  1032.     endm
  1033. ;*-*
  1034. ;; oris
  1035. _oris: macro
  1036.     dc.l (25<<(31-5))+(\2<<(31-10))+(\1<<(31-15))+\3
  1037.     endm
  1038. ;*-*
  1039. ;; rfi
  1040. _rfi: macro
  1041.     dc.l    (19<<(31-5))+(50*2)
  1042.     endm
  1043. ;*-*
  1044. ;; rlwimi   / rlwimi.   / inslwi    / insrwi
  1045. _rlwimi: macro
  1046.     dc.l    (20<<(31-5))+(\1<<(31-15))+(\2<<(31-10))+(\3<<(31-20))+(\4<<(31-25))+(\5<<(31-30))
  1047.     endm
  1048. _rlwimi_: macro
  1049.     dc.l    (20<<(31-5))+(\1<<(31-15))+(\2<<(31-10))+(\3<<(31-20))+(\4<<(31-25))+(\5<<(31-30))+1
  1050.     endm
  1051. _inslwi: macro
  1052.     _rlwimi \1,\2,32-\4,\4,\4+\3-1
  1053.     endm
  1054. _insrwi: macro
  1055.     _rlwimi \1,\2,32-(\3+\4),\4,(\3+\4)-1
  1056.     endm
  1057. ;*-*
  1058. ;; rlwinm   / rlwinm.   / extlwi    / extrwi
  1059. _rlwinm: macro
  1060.     dc.l    (21<<(31-5))+(\1<<(31-15))+(\2<<(31-10))+(\3<<(31-20))+(\4<<(31-25))+(\5<<(31-30))
  1061.     endm
  1062. _rlwinm_: macro
  1063.     dc.l    (21<<(31-5))+(\1<<(31-15))+(\2<<(31-10))+(\3<<(31-20))+(\4<<(31-25))+(\5<<(31-30))+1
  1064.     endm
  1065. _extlwi: macro
  1066.     _rlwinm \1,\2,\4,0,(\3-1)
  1067.     endm
  1068. _extrwi: macro
  1069.     _rlwinm \1,\2,(\3+\4),32-\3,31
  1070.     endm
  1071. ;*-*
  1072. ;; rotlwi   / rotrwi    / slwi      / srwi
  1073. _rotlwi: macro
  1074.     _rlwinm \1,\2,\3,0,31
  1075.     endm
  1076. _rotrwi: macro
  1077.     _rlwinm \1,\2,(32-\3),0,31
  1078.     endm
  1079. _slwi: macro
  1080.     _rlwinm \1,\2,\3,0,(31-\3)
  1081.     endm
  1082. _srwi: macro
  1083.     _rlwinm \1,\2,(32-\3),\3,31
  1084.     endm
  1085. ;*-*
  1086. ;; clrlwi   / clrrwi    / clrlslwi
  1087. _clrlwi: macro
  1088.     _rlwinm \1,\2,0,\3,31
  1089.     endm
  1090. _clrrwi: macro
  1091.     _rlwinm \1,\2,0,0,(31-\3)
  1092.     endm
  1093. _clrlslwi: macro
  1094.     _rlwinm \1,\2,\4,(\3-\4),(31-\4)
  1095.     endm
  1096. ;*-*
  1097. ;; rlwnm    / rlwnm.    / rotlw
  1098. _rlwnm: macro
  1099.     dc.l (23<<(31-5))+(\1<<(31-15))+(\2<<(31-10))+(\3<<(31-20))+(\4<<(31-25))+(\5<<(31-30))
  1100.     endm
  1101. _rlwnm_: macro
  1102.     dc.l (23<<(31-5))+(\1<<(31-15))+(\2<<(31-10))+(\3<<(31-20))+(\4<<(31-25))+(\5<<(31-30))+1
  1103.     endm
  1104. _rotlw: macro
  1105.     _rlwnm \1,\2,\3,0,31
  1106.     endm
  1107. ;*-*
  1108. ;; sc
  1109. _sc: macro
  1110.     dc.l (17<<(31-5))+2
  1111.     endm
  1112. ;*-*
  1113. ;; slw      / slw.
  1114. _slw: macro
  1115.     dc.L (31<<(31-5))+(24*2)+(\1<<(31-15))+(\2<<(31-10))+(\3<<(31-20))
  1116.     endm
  1117. _slw_: macro
  1118.     dc.L (31<<(31-5))+(24*2)+(\1<<(31-15))+(\2<<(31-10))+(\3<<(31-20))+1
  1119.     endm
  1120. ;*-*
  1121. ;; sraw     / sraw.     / srawi     / srawi.
  1122. _sraw: macro
  1123.     dc.l (31<<(31-5))+(792*2)+(\1<<(31-15))+(\2<<(31-10))+(\3<<(31-20))
  1124.     endm
  1125. _sraw_: macro
  1126.     dc.l (31<<(31-5))+(792*2)+(\1<<(31-15))+(\2<<(31-10))+(\3<<(31-20))+1
  1127.     endm
  1128. _srawi: macro
  1129.     dc.l (31<<(31-5))+(824*2)+(\1<<(31-15))+(\2<<(31-10))+(\3<<(31-20))
  1130.     endm
  1131. _srawi_: macro
  1132.     dc.l (31<<(31-5))+(824*2)+(\1<<(31-15))+(\2<<(31-10))+(\3<<(31-20))+1
  1133.     endm
  1134. ;*-*
  1135. ;; srw      / srw.
  1136. _srw: macro
  1137. _srw: macro
  1138.     dc.l (31<<(31-5))+(536*2)+(\1<<(31-15))+(\2<<(31-10))+(\3<<(31-20))
  1139.     endm
  1140. _srw_: macro
  1141.     dc.l (31<<(31-5))+(536*2)+(\1<<(31-15))+(\2<<(31-10))+(\3<<(31-20))+1
  1142.     endm
  1143. ;*-*
  1144. ;; stb      / stbu      / stbux     / stbx
  1145. _stb: macro
  1146.     dc.l    (38*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  1147.     endm
  1148. _stbu: macro
  1149.     dc.l    (39*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  1150.     endm
  1151. _stbux: macro
  1152.     dc.l    (31*1<<(31-5))+(247*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  1153.     endm
  1154. _stbx: macro
  1155.     dc.l    (31*1<<(31-5))+(215*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  1156.     endm
  1157. ;*-*
  1158. ;; stfd     / stfdu     / stfdux    / stfdx
  1159. _stfd: macro
  1160.     dc.l    (54*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  1161.     endm
  1162. _stfdu: macro
  1163.     dc.l    (55*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  1164.     endm
  1165. _stfdux: macro
  1166.     dc.l    (31*1<<(31-5))+(759*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  1167.     endm
  1168. _stfdx: macro
  1169.     dc.l    (31*1<<(31-5))+(727*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  1170.     endm
  1171. ;*-*
  1172. ;; stfiwx
  1173. _stfiwx: macro
  1174.     dc.l (31<<(31-5))+(983*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))
  1175.     endm
  1176. ;*-*
  1177. ;; stfs     / stfsu     / stfsux    / stfsx
  1178. _stfs: macro
  1179.     dc.l    (52*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  1180.     endm
  1181. _stfsu: macro
  1182.     dc.l    (53*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  1183.     endm
  1184. _stfsux: macro
  1185.     dc.l    (31*1<<(31-5))+(695*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  1186.     endm
  1187. _stfsx: macro
  1188.     dc.l    (31*1<<(31-5))+(663*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  1189.     endm
  1190. ;*-*
  1191. ;; sthbrx
  1192. _sthbrx: macro
  1193.     dc.l (31<<(31-5))+(918*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))
  1194.     endm
  1195. ;*-*
  1196. ;; sth      / sthu      / sthux     / sthx
  1197. _sth: macro
  1198.     dc.l    (44*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  1199.     endm
  1200. _sthu: macro
  1201.     dc.l    (45*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  1202.     endm
  1203. _sthux: macro
  1204.     dc.l    (31*1<<(31-5))+(439*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  1205.     endm
  1206. _sthx: macro
  1207.     dc.l    (31*1<<(31-5))+(407*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  1208.     endm
  1209. ;*-*
  1210. ;; stmw
  1211. _stmw: macro
  1212.     dc.l (47<<(31-5))+(\1<<(31-10))+\2+(\3<<(31-15))
  1213.     endm
  1214. ;*-*
  1215. ;; stswi    / stswx
  1216. _stswi: macro
  1217.     dc.l (31<<(31-5))+(725*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))
  1218.     endm
  1219. _stswx: macro
  1220.     dc.l (31<<(31-5))+(661*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))
  1221.     endm
  1222. ;*-*
  1223. ;; stw      / stwu      / stwux     / stwx
  1224. _stw: macro
  1225.     dc.l    (36*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  1226.     endm
  1227. _stwu: macro
  1228.     dc.l    (37*1<<(31-5))+(\1*1<<(31-10))+\2+(\3*1<<(31-15))
  1229.     endm
  1230. _stwux: macro
  1231.     dc.l    (31*1<<(31-5))+(183*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  1232.     endm
  1233. _stwx: macro
  1234.     dc.l    (31*1<<(31-5))+(151*2)+(\1*1<<(31-10))+(\2*1<<(31-15))+(\3*1<<(31-20))
  1235.     endm
  1236. ;*-*
  1237. ;; stwbrx   / stwcx.
  1238. _stwbrx: macro
  1239.     dc.l (31<<(31-5))+(662*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))
  1240.     endm
  1241. _stwcx_: macro
  1242.     dc.l (31<<(31-5))+(150*2)+1+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))
  1243.     endm
  1244. ;*-*
  1245. ;; subf     / subf.     / subfo     / subfo.    / sub
  1246. _subf: macro
  1247.     dc.l (31<<(31-5))+(40*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))
  1248.     endm
  1249. _subf_: macro
  1250.     dc.l (31<<(31-5))+(40*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))+1
  1251.     endm
  1252. _subfo: macro
  1253.     dc.l (31<<(31-5))+(40*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))+(1<<(31-21))
  1254.     endm
  1255. _subfo_: macro
  1256.     dc.l (31<<(31-5))+(40*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))+1+(1<<(31-21))
  1257.     endm
  1258. _sub: macro
  1259.     _subf \1,\3,\2
  1260.     endm
  1261. ;*-*
  1262. ;; subfc    / subfc.    / subfco    / subfco.   / subc
  1263. _subfc: macro
  1264.     dc.l (31<<(31-5))+(8*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))
  1265.     endm
  1266. _subfc_: macro
  1267.     dc.l (31<<(31-5))+(8*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))+1
  1268.     endm
  1269. _subfco: macro
  1270.     dc.l (31<<(31-5))+(8*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))+(1<<(31-21))
  1271.     endm
  1272. _subfco_: macro
  1273.     dc.l (31<<(31-5))+(8*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))+1+(1<<(31-21))
  1274.     endm
  1275. _subc: macro
  1276.     _subfc \1,\3,\2
  1277.     endm
  1278. ;*-*
  1279. ;; subfe    / subfe.    / subfeo    / subfeo.
  1280. _subfe: macro
  1281.     dc.l (31<<(31-5))+(136*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))
  1282.     endm
  1283. _subfe_: macro
  1284.     dc.l (31<<(31-5))+(136*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))+1
  1285.     endm
  1286. _subfeo: macro
  1287.     dc.l (31<<(31-5))+(136*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))+(1<<(31-21))
  1288.     endm
  1289. _subfeo_: macro
  1290.     dc.l (31<<(31-5))+(136*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))+1+(1<<(31-21))
  1291.     endm
  1292. ;*-*
  1293. ;; subfic
  1294. _subfic: macro
  1295.     dc.l (8<<(31-5))+(\1<<(31-10))+(\2<<(31-15))+\3
  1296.     endm
  1297. ;*-*
  1298. ;; subfme   / subfme.   / subfmeo   / subfmeo.
  1299. _subfme: macro
  1300.     dc.l (31<<(31-5))+(232*2)+(\1<<(31-10))+(\2<<(31-15))
  1301.     endm
  1302. _subfme_: macro
  1303.     dc.l (31<<(31-5))+(232*2)+(\1<<(31-10))+(\2<<(31-15))+1
  1304.     endm
  1305. _subfmeo: macro
  1306.     dc.l (31<<(31-5))+(232*2)+(\1<<(31-10))+(\2<<(31-15))+(1<<(31-21))
  1307.     endm
  1308. _subfmeo_: macro
  1309.     dc.l (31<<(31-5))+(232*2)+(\1<<(31-10))+(\2<<(31-15))+1+(1<<(31-21))
  1310.     endm
  1311. ;*-*
  1312. ;; subfze   / subfze.   / subfzeo   / subfzeo.
  1313. _subfze: macro
  1314.     dc.l (31<<(31-5))+(200*2)+(\1<<(31-10))+(\2<<(31-15))
  1315.     endm
  1316. _subfze_: macro
  1317.     dc.l (31<<(31-5))+(200*2)+(\1<<(31-10))+(\2<<(31-15))+1
  1318.     endm
  1319. _subfzeo: macro
  1320.     dc.l (31<<(31-5))+(200*2)+(\1<<(31-10))+(\2<<(31-15))+(1<<(31-21))
  1321.     endm
  1322. _subfzeo_: macro
  1323.     dc.l (31<<(31-5))+(200*2)+(\1<<(31-10))+(\2<<(31-15))+1+(1<<(31-21))
  1324.     endm
  1325. ;*-*
  1326. ;; sync
  1327. _sync: macro
  1328.     dc.l (31<<(31-5))+(598*2)
  1329.     endm
  1330. ;*-*
  1331. ;; tlbia    / tlbie     / tlbsync
  1332. _tlbia: macro
  1333.     dc.l (31<<(31-5))+(370*2)
  1334.     endm
  1335. _tlbie: macro
  1336.     dc.l (31<<(31-5))+(306*2)+(\1<<(31-20))
  1337.     endm
  1338. _tlbsync: macro
  1339.     dc.l (31<<(31-5))+(566*2)
  1340.     endm
  1341. ;*-*
  1342. ;; tw       / twi
  1343. _tw: macro
  1344.     dc.l (31<<(31-5))+(4*2)+(\1<<(31-10))+(\2<<(31-15))+(\3<<(31-20))
  1345.     endm
  1346. _twi: macro
  1347.     dc.l (3<<(31-5))+(\1<<(31-10))+(\2<<(31-15))+\3
  1348.     endm
  1349. ;*-*
  1350. ;; xor      / xor.      / xori      / xoris
  1351. _xor: macro
  1352.     dc.l    (31<<(31-5))+(316*2)+(\1<<(31-15))+(\2<<(31-10))+(\3<<(31-20))
  1353.     endm
  1354. _xor_: macro
  1355.     dc.l    (31<<(31-5))+(316*2)+(\1<<(31-15))+(\2<<(31-10))+(\3<<(31-20))+1
  1356.     endm
  1357. _xori: macro
  1358.     dc.l    (26<<(31-5))+(\1<<(31-15))+(\2<<(31-10))+\3
  1359.     endm
  1360. _xoris: macro
  1361.     dc.l    (27<<(31-5))+(\1<<(31-15))+(\2<<(31-10))+\3
  1362.     endm
  1363. ;*-*
  1364.  
  1365.